↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
QUERY_IN_G(XS) → U6_G(XS, shuffle_in_aa(cons(X, XS), YS))
QUERY_IN_G(XS) → SHUFFLE_IN_AA(cons(X, XS), YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → REVERSE_IN_AA(XS, ZS)
REVERSE_IN_AA(cons(X, XS), YS) → U2_AA(X, XS, YS, reverse_in_aa(XS, ZS))
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_AA(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → APPEND_IN_AAA(ZS, cons(X, nil), YS)
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → U1_AAA(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_AA(X, XS, YS, shuffle_in_aa(ZS, YS))
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
QUERY_IN_G(XS) → U6_G(XS, shuffle_in_aa(cons(X, XS), YS))
QUERY_IN_G(XS) → SHUFFLE_IN_AA(cons(X, XS), YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → REVERSE_IN_AA(XS, ZS)
REVERSE_IN_AA(cons(X, XS), YS) → U2_AA(X, XS, YS, reverse_in_aa(XS, ZS))
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_AA(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → APPEND_IN_AAA(ZS, cons(X, nil), YS)
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → U1_AAA(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_AA(X, XS, YS, shuffle_in_aa(ZS, YS))
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_in_aa)
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa
reverse_in_aa
U2_aa(x0)
U3_aa(x0)
append_in_aaa
U1_aaa(x0)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa
reverse_in_aa
U2_aa(x0)
U3_aa(x0)
append_in_aaa
U1_aaa(x0)
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
QUERY_IN_G(XS) → U6_G(XS, shuffle_in_aa(cons(X, XS), YS))
QUERY_IN_G(XS) → SHUFFLE_IN_AA(cons(X, XS), YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → REVERSE_IN_AA(XS, ZS)
REVERSE_IN_AA(cons(X, XS), YS) → U2_AA(X, XS, YS, reverse_in_aa(XS, ZS))
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_AA(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → APPEND_IN_AAA(ZS, cons(X, nil), YS)
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → U1_AAA(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_AA(X, XS, YS, shuffle_in_aa(ZS, YS))
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
QUERY_IN_G(XS) → U6_G(XS, shuffle_in_aa(cons(X, XS), YS))
QUERY_IN_G(XS) → SHUFFLE_IN_AA(cons(X, XS), YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → REVERSE_IN_AA(XS, ZS)
REVERSE_IN_AA(cons(X, XS), YS) → U2_AA(X, XS, YS, reverse_in_aa(XS, ZS))
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_AA(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U2_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → APPEND_IN_AAA(ZS, cons(X, nil), YS)
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → U1_AAA(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_AA(X, XS, YS, shuffle_in_aa(ZS, YS))
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA(cons(X, XS), YS, cons(X, ZS)) → APPEND_IN_AAA(XS, YS, ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
REVERSE_IN_AA(cons(X, XS), YS) → REVERSE_IN_AA(XS, ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
query_in_g(XS) → U6_g(XS, shuffle_in_aa(cons(X, XS), YS))
shuffle_in_aa(nil, nil) → shuffle_out_aa(nil, nil)
shuffle_in_aa(cons(X, XS), cons(X, YS)) → U4_aa(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
U4_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U5_aa(X, XS, YS, shuffle_in_aa(ZS, YS))
U5_aa(X, XS, YS, shuffle_out_aa(ZS, YS)) → shuffle_out_aa(cons(X, XS), cons(X, YS))
U6_g(XS, shuffle_out_aa(cons(X, XS), YS)) → query_out_g(XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U4_AA(X, XS, YS, reverse_out_aa(XS, ZS)) → SHUFFLE_IN_AA(ZS, YS)
SHUFFLE_IN_AA(cons(X, XS), cons(X, YS)) → U4_AA(X, XS, YS, reverse_in_aa(XS, ZS))
reverse_in_aa(nil, nil) → reverse_out_aa(nil, nil)
reverse_in_aa(cons(X, nil), cons(X, nil)) → reverse_out_aa(cons(X, nil), cons(X, nil))
reverse_in_aa(cons(X, XS), YS) → U2_aa(X, XS, YS, reverse_in_aa(XS, ZS))
U2_aa(X, XS, YS, reverse_out_aa(XS, ZS)) → U3_aa(X, XS, YS, append_in_aaa(ZS, cons(X, nil), YS))
U3_aa(X, XS, YS, append_out_aaa(ZS, cons(X, nil), YS)) → reverse_out_aa(cons(X, XS), YS)
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS), YS, cons(X, ZS)) → U1_aaa(X, XS, YS, ZS, append_in_aaa(XS, YS, ZS))
U1_aaa(X, XS, YS, ZS, append_out_aaa(XS, YS, ZS)) → append_out_aaa(cons(X, XS), YS, cons(X, ZS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_in_aa)
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa
reverse_in_aa
U2_aa(x0)
U3_aa(x0)
append_in_aaa
U1_aaa(x0)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa
reverse_in_aa
U2_aa(x0)
U3_aa(x0)
append_in_aaa
U1_aaa(x0)
U4_AA(reverse_out_aa) → SHUFFLE_IN_AA
SHUFFLE_IN_AA → U4_AA(reverse_out_aa)
SHUFFLE_IN_AA → U4_AA(U2_aa(reverse_in_aa))
reverse_in_aa → reverse_out_aa
reverse_in_aa → U2_aa(reverse_in_aa)
U2_aa(reverse_out_aa) → U3_aa(append_in_aaa)
U3_aa(append_out_aaa) → reverse_out_aa
append_in_aaa → append_out_aaa
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa) → append_out_aaa